package net.njcp.spi.selector.api;

import net.njcp.spi.exception.NoSpiMatchException;

import java.util.Map;

/**
 * @ClassName ISelector
 * @Description:  1、根据传入的条件，从所有的实现类中，找到一个最匹配的实现类返回
 *                2、如果查不到，则抛一个异常NoSpiMatchException出去
 * @Author 柳拓
 * @Date 2019/8/6
 * @Version V1.0
 **/
public interface ISelector<T> {

    /*
     * @MethodName:
     * @Description: TODO
     * @Param: 一个是所有的实现类列表map,用于判断的输入条件conf
     * @Return:
     * @Author: 柳拓
     * @Date: 下午5:32
     **/
    <K> K selector(Map<String, SpiImplWrapper<K>> map, T conf) throws NoSpiMatchException;

}
